Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Service initialization fixes #287

Merged
merged 8 commits into from
Apr 18, 2024
Merged

Conversation

nathanwbrei
Copy link
Collaborator

Changed how the builtin JServices (JParameterManager, JComponentManager, JLoggingService, JPluginLoader) get initialized. Previously, app.SetParameterValue() sometimes didn't have an effect depending the Service that used the parameter had already been initialized. This meant that:

  • Setting logging levels via JApplication::SetParameterValue() never had an effect.
  • If the user called JApplication::GetService() before JApplication::Initialize(), this would trigger a wave of JService initializations, which would cause the services to load parameter values, possibly before the user was finished setting them.

Now, the JApplication constructor sets up the services, but doesn't initialize any of them. All Services are meant to be initialized during JApplication::Initialize(). JApplication::SetParameter() and ProvideService() will throw an exception if the user attempts to call them after Initialize() finishes. Calling JApplication::GetService() before Initialize() starts will print a warning message. Currently we still need to be able to call GetService() before Initialize() for the sake of the "custom topologies" used by SubeventExample, TopologyTest, and SubeventTest. However, we will be changing this at two different levels in the near future: Firstly, users will be able to provide multiple instances of a JService and choose which one to use via a parameter. Secondly, SubeventExample won't even require a custom topology.

@nathanwbrei nathanwbrei merged commit 88cc204 into master Apr 18, 2024
3 checks passed
@nathanwbrei nathanwbrei deleted the nbrei_service_initialization branch April 18, 2024 03:39
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant